<?php
/**
 * Created by JetBrains PhpStorm.
 * User: BLB
 * Date: 23-6-11
 * Time: 14:29
 * To change this template use File | Settings | File Templates.
 */
require_once(Config::acquire('Model', null, 'model'));
require_once(Config::acquire('Question', MODEL));

class Diensten extends Model
{
    /**
     * initialiseren variabelen
     */
    private $id;
    private $categorie;
    private $naam;
    private $omschrijving;
    private $question;

    /**
     * aanmaken van de vriabelen
     */
    public function __construct($id, $categorie, $naam, $omschrijving, Question $question)
    {
        $this->id = $id;
        $this->categorie = $categorie;
        $this->naam = $naam;
        $this->omschrijving = $omschrijving;
        $this->question = $question;

    }

    /**
     * Query voor deleten van de gegevens uit de gegeven tabel
     */
    public function delete()
    {
        SQL::execute("DELETE FROM `diensten` WHERE `Dienst_ID` = {$this->id}");
        $this->__destruct();
    }

    /**
     * gegevens naar een array schrijven.
     */
    public function toArray()
    {
        return array(
            "ID" => $this->id,
            "Categorie" => $this->categorie,
            "Naam" => $this->naam,
            "Omschrijving" => $this->omschrijving,
            "QuestionID" => $this->question->getID(),
            "QuestionNaam" => $this->question->getOmschrijving()
        );
    }

    /**
     * Query voor het updaten van de betreffende tabel
     */
    public function update()
    {
        if (!is_null($this->id)) {
            SQL::execute("UPDATE `diensten`
                      SET `Dienst_Category`  = '{$this->categorie}',
                          `Dienst_Naam` = '{$this->naam}',
                          `Dienst_Omschrijving` = '{$this->omschrijving}',
                          `question_ID` = '{$this->question->getId()}'
                      WHERE `Dienst_ID` ={$this->id}");
        } else {
          SQL::execute("INSERT INTO `diensten` (
                            `Dienst_ID`, `Dienst_Category`, `Dienst_Naam`, `Dienst_Omschrijving`, `question_ID`)
                             VALUES (NULL ,

                              '{$this->categorie}',
                              '{$this->naam}',
                              '{$this->omschrijving}',
                              '{$this->question->getId()}')");

        }
    }


    /**
     * aanmaken van een nieuw item
     */
    public static function create($id, $categorie, $naam, $omschrijving, Question $question)
    {
        return new Diensten($id, $categorie, $naam, $omschrijving, $question);
    }


    /*
     * lezen van de gegvens van 1 enkel item
     */
    public static function read($id)
    {
        $diensten = SQL::query("SELECT * FROM `diensten` WHERE `Dienst_ID` =$id");

        if ($diensten->isValid()) {
            return Diensten::create(
                $diensten->fetchField('Dienst_ID'),
                $diensten->fetchField('Dienst_Category'),
                $diensten->fetchField('Dienst_Naam'),
                $diensten->fetchField('Dienst_Omschrijving'),
                Question::read($diensten->fetchField('question_ID')));

        } else {
            return null;
        }
    }

    /**
     * Lezen van de gegevens in een tabel
     */
    public static function readAll()
    {
        $list = array();
        $diensten = SQL::query("SELECT * FROM `diensten` ORDER BY `Dienst_ID`");
        while ($diensten->isValid()) {

            $list[] = Diensten::create(
                $diensten->fetchField('Dienst_ID'),
                $diensten->fetchField('Dienst_Category'),
                $diensten->fetchField('Dienst_Naam'),
                $diensten->fetchField('Dienst_Omschrijving'),
                Question::read($diensten->fetchField('question_ID')));
            $diensten->next();
        }
        return $list;
    }

    /**
     * Setters & getters
     */
         public function setId($id)
         {
             $this->id = $id;
         }

    public function getId()
    {
        return $this->id;
    }

    public function setCategorie($categorie)
    {
        $this->categorie = $categorie;
    }

    public function getCategorie()
    {
        return $this->categorie;
    }

    public function setNaam($naam)
    {
        $this->naam = $naam;
    }

    public function getNaam()
    {
        return $this->naam;
    }

    public function setOmschrijving($omschrijving)
    {
        $this->omschrijving = $omschrijving;
    }

    public function getOmschrijving()
    {
        return $this->omschrijving;
    }

    public function setQuestion($questionid)
    {
        $this->question = $questionid;
    }

    public function getQuestion()
    {
        return $this->question;
    }
}